package offer_test_60;

//Q2写一个函数，求两个整数之和，要求在函数体内不得使用+、-、*、/四则运算符号。
//假设给出的num1和num2，首先我们将num1^num2得到那些0 1位应该相加，没有进位。
//然后，我们用num1&&num2得到所有进位组成的数，因为这个进位组成的数应该是左移一位
//然后加入到之前得到的那个没有进位的数中。若，还有进位，证明位操作还有冲突，需要继续
//左移并加入到之前的结果中。直到所有的进位处理完毕为止。
public class seven_AddTwoNumbers {
	public static void main(String[] args) {
		System.out.println(add(8, 16));
	}

	public static int add(int num1, int num2) {
		int sum, carray;
		do {
			sum = num1 ^ num2;
			carray = (num1 & num2) << 1;
			num1 = sum;
			num2 = carray;
		} while (num2 != 0);
		return num1;
	}
}
